package top.tigerwoods.spring.base.core.exception;

/**
 * description  Woods 运行时的 exception
 *   try cache 捕获的系统 exception 都要统一使用此 exception 或者 继承此 exception 的对象
 *   系统或第三方应用产生的 exception 代码应小于 0
 *   woods 系统中主动抛出的 exception 代码应大于 0
 *   极特殊的情况下需要抛出有效（正确返回值）的 exception 代码等于 0
 * @author TigerLin
 * @version 1.0
 * create 2024/06/19  04:13
 */

public class WoodsException extends RuntimeException implements IWoodsException{
    private static final long serialVersionUID = -3770100385901751245L;
    /**
     * exception 代码
     */
    Integer code = 0;
    /**
     * exception 消息
     */
    String message;
    /**
     * exception 栈信息
     */
    StackTraceElement[] stackTrace;

    public WoodsException(RuntimeException exception){
        this.code = -1;
        this.message = exception.getMessage();
        this.stackTrace = exception.getStackTrace();
    }

    public WoodsException(String message){
        this.code = 1;
        this.message = message;
    }

    public WoodsException(Integer code, String message){
        this.code = code;
        this.message = message;
    }


    @Override
    public Integer getCode() {
        return this.code;
    }
}
